﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Net.Mime;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DevelopmentPFR.Utilitaire;
using DevelopmentPFR.Classes;

namespace DevelopmentPFR.Hypermarche
{
    public partial class Stock : System.Web.UI.Page
    {
        List<Articles> produitsSelectionnes;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                loadDataStock();
            }
        }
        /// <summary>
        /// Se lance après le chargement de la page
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_LoadComplete(object sender, EventArgs e)
        {
            //Permet de cacher la colonne "rupture" utilisé pour la couleur rouge sur les produits en manquent de stock
            listeStock.Columns[5].Visible = false;
        }

        #region Evénements

        /// <summary>
        /// Modifie la couleur et coche les lignes qui ont un stock critique
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void changeColor_OnRowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                //Selection des lignes dont la quantité est inférieur au stock min
                if (Convert.ToInt32(e.Row.Cells[5].Text) == 0)
                {
                    e.Row.BackColor = Color.Red;
                    var checkProduit = e.Row.FindControl("produitCheck") as CheckBox;
                    checkProduit.Checked = true;
                }
            }
        }

        /// <summary>
        /// Action permettant d'envoyer les artciles en session
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void genererCommande_Click(object sender, EventArgs e)
        {
            produitsSelectionnes = new List<Articles>();
            foreach(GridViewRow row in listeStock.Rows)
            {
                var checkProduit = row.FindControl("produitCheck") as CheckBox;
                if(checkProduit != null && checkProduit.Checked)
                {
                    produitsSelectionnes.Add(new Articles
                    {
                        ReferenceArticle = row.Cells[1].Text,
                        DesignationArticle = row.Cells[2].Text,
                        PrixHtArticle = float.Parse(row.Cells[3].Text),
                        QuantiteEnStock = int.Parse(row.Cells[4].Text)
                    });
                }
            }
            if(produitsSelectionnes.Count != 0)
            {
                Session["produitSelectionnes"] = produitsSelectionnes;
                Response.Redirect("CreationRapportDeCommande.aspx");
            }
        }
        #endregion


        #region Méthodes
        /// <summary>
        /// Charge la grille des stocks
        /// </summary>
        private void loadDataStock()
        {
            DataTable dataTableStock = new DataTable();
            if (Request.Params["categorie"] != string.Empty)
            {
                // ajout du paramètre categorie à la procédure stocké
                dataTableStock = BaseDeDonnees.ExecuteSelectStoredProcedure("spHyp_selectProductStock",
                    new Hashtable()
                    {
                        {"@categorieArticle", Request.Params["categorie"]}
                    });
            }
            else
            {
                dataTableStock = BaseDeDonnees.ExecuteSelectStoredProcedure("spHyp_selectProductStock");
            }
            listeStock.DataSource = dataTableStock;
            listeStock.DataBind();
        }
        #endregion

      
    }
}